.TH "GTKWAVE" "1" "3.3.101" "Anthony Bybell" "Simulation Wave Viewer"
.SH "NAME"
.LP 
gtkwave \- Visualization tool for VCD, LXT, LXT2, VZT, FST, and GHW files
.SH "SYNTAX"
.LP 
gtkwave [\fIoption\fP]... [\fIDUMPFILE\fP] [\fISAVEFILE\fP] [\fIRCFILE\fP]

.SH "DESCRIPTION"
.LP 
Visualization tool for VCD, LXT, LXT2, VZT, FST, and GHW.  VCD is an industry standard simulation dump format. LXT, LXT2, VZT, and FST have been designed
specifically for use with gtkwave.  GHW is the native VHDL format generated by GHDL.  Native dumpers exist in Icarus Verilog and the open source version of VeriWell for the LXT formats so conversion with \fIvcd2lxt\fP(1) or
\fIvcd2lxt2\fP(1) is not necessary to take direct advantage of LXT with those simulators.  AET2 files can also be processed provided
that libae2rw is available but this is only of interest to people who use IBM EDA toolsets.
.SH "OPTIONS"
.LP 
.TP 


\fB\-n\fR,\fB\-\-nocli\fR <\fIdirectory name\fP>
Use file requester for dumpfile name.
.TP
\fB\-f\fR,\fB\-\-dump\fR <\fIfilename\fP>
Specify dumpfile name.
.TP 
\fB\-F\fR,\fB\-\-fastload\fR
generate/use VCD recoder fastload files.  This is similar to the \fB\-g\fR,\fB\-\-giga\fR option, however the spill file generated is not deleted.
Reloading the VCD file another time (either through pressing the reload button or by re-invoking gtkwave at a later time) will use this generated spill file
rather than read the value change section of the VCD file.  This will speed up reloads on large files greatly as only the variable declaration section needs to 
be parsed.  Note that the spill file contains the file size and modification date of the VCD file in order to detect if it is stale and needs to
be regenerated.
.TP
\fB\-o\fR,\fB\-\-optimize\fR
optimize VCD to FST.  This will automatically call \fIvcd2fst\fP(1) to perform the file conversion.  This
option is highly recommended with large VCD files in order to cut down on the memory usage required for
file viewing.  Can be used in conjunction with \fB\-v\fR,\fB\-\-vcd\fR.
.TP
\fB\-a\fR,\fB\-\-save\fR <\fIfilename\fP>
Specify savefile name.  Useful suffixes for desktop integration are .gtkw and .sav (deprecated).
.TP
\fB\-A\fR,\fB\-\-autosavename\fR
Assume savefile is suffix modified dumpfile name (i.e., remove and replace with ".gtkw").
.TP
\fB\-r\fR,\fB\-\-rcfile\fR <\fIfilename\fP>
Specify override \fI.gtkwaverc\fP filename.
.TP 
\fB\-l\fR,\fB\-\-logfile\fR <\fIfilename\fP>
Specify simulation logfile name.  Multiple logfiles may be specified by preceding each with the command flag.  By selecting the numbers in the text widget, the marker will immediately zoom to the specific time value.
.TP 
\fB\-d\fR,\fB\-\-defaultskip\fR
If there is not a \fI.gtkwaverc\fP file in the home directory or current directory and it is not explicitly specified on the command line, when
this option is enabled, do not use an implicit configuration file and instead default to the old "whitescreen" behavior.
.TP 
\fB\-D\fR,\fB\-\-dualid\fR <\fIwhich\fP>
Specify multisession identifier information.  The format of "which" is m+nnnnnnnn where m is the session number 0 or 1 and nnnnnnnn is a hexadecimal
value indicating the shared memory ID of an array of two gtkwave_dual_ipc_t data structures.  The intended use of this flag is for front ends such as 
\fItwinwave\fP(1).
.TP 
\fB\-s\fR,\fB\-\-start\fR <\fItime\fP>
Specify start time for LXT2/VZT block skip.
.TP 
\fB\-e\fR,\fB\-\-end\fR <\fItime\fP>
Specify end time for LXT2/VZT block skip.
.TP
\fB\-t\fR,\fB\-\-stems\fR <\fIfilename\fP>
Specify stems file for source code annotation.  This will automatically launch the \fIrtlbrowse\fP(1) helper process.
See \fIxml2stems\fP(1) for information on stems file generation.
.TP
\fB\-c\fR,\fB\-\-cpu\fR <\fInumcpus\fP>
Specify number of CPUs available for parallelizable ops (e.g., block prefetching on VZT reads).
.TP
\fB\-N\fR,\fB\-\-nowm\fR
Disable window manager for most windows.  The intended use of this is to be used in conjunction with the \fB\-\-script\fR
option, however this also can be used to reparent into an alternate window manager.
.TP
\fB\-M\fR,\fB\-\-nomenus\fR
Do not render menubar. This is mainly used for making a restricted applet that cannot initiate file I/O
on its own, however it also can be used as a workaround in earlier versions of GTK+ that do not handle
GTKSocket/GTKPlug focus interactions properly.
.TP
\fB\-S\fR,\fB\-\-script\fR <\fIfilename\fP>
Specify Tcl command script file for execution.
.TP
\fB\-T\fR,\fB\-\-tcl_init\fR <\fIfilename\fP>
Specify Tcl command script to be loaded on startup.  Implies \-\-wish command flag.
.TP 
\fB\-W\fR,\fB\-\-wish\fR
Enable Tcl command line on stdio.  All script commands can be typed in on stdin.
.TP
\fB\-R\fR,\fB\-\-repscript\fR <\fIfilename\fP>
Specify Tcl command script for periodic execution.
.TP
\fB\-P\fR,\fB\-\-repperiod\fR <\fIvalue\fP>
Specifies delay in milliseconds between successive executions of the repscript.  Default is 500.
.TP
\fB\-X\fR,\fB\-\-xid\fR <\fIXID\fP>
Specify XID (in hexadecimal) of window for a GtkPlug to connect to.  GTKWave does not directly render to a window but instead renders into a 
GtkPlug expecting a GtkSocket at the other end.  Note that there are issues with accelerators working properly so menus are
disabled in the componentized version of GTKWave when it functions as a plug-in.
.TP 
\fB\-1\fR,\fB\-\-rpcid\fR <\fIRPCID\fP>
Specify RPCID of GConf (or GSettings) session.  This is a decimal value zero or greater and is the identifier used by GConf to know what update data to listen to.
This option only works if \fB\-\-with-gconf\fR (or \fB\-\-with-gsettings\fR) was specified during \fI./configure\fP.
.TP
\fB\-2\fR,\fB\-\-chdir\fR <\fIDIRNAME\fP>
Specify new current working directory.  This is typically used in OSX to run gtkwave if it was compiled and placed in an .app bundle.  Note that if the environment variable GTKWAVE_CHDIR is defined, the argument is a dummy argument. This is to support OSX in that the open command has difficulty in passing spaces as command line arguments and it is possible for \fIpwd\fP(1) to return spaces.
.TP
\fB\-3\fR,\fB\-\-restore\fR
Restore previous default (0) or  \fB\-\-rpcid\fR RPCID numbered session.  This only works for one dumpfile, savefile, rcfile, and current working directory so
it has the effect of restoring the most recently loaded file.  If used in conjunction with the \fB\-\-rpcid\fR option, that option must
be specified earlier in the command line than the \fB\-\-restore\fR option.  If RPCID is not specified, then the default of 0 is used.
This option only works if \fB\-\-with-gconf\fR (or \fB\-\-with-gsettings\fR) was specified during \fI./configure\fP.  Note that for GSettings, limitations in its implementation allow it only to restore the previous session.
.TP
\fB\-4\fR,\fB\-\-rcvar\fR
Specify single rc variable values individually.  These take effect after any other rc variables have been loaded from internal defaults or from configuration files.
.TP
\fB\-5\fR,\fB\-\-sstexclude\fR
Specify sst exclusion filter filename.
.TP
\fB\-6\fR,\fB\-\-dark\fR
Set gtk-application-prefer-dark-theme = TRUE.
.TP
\fB\-7\fR,\fB\-\-saveonexit\fR
At exit, a requester is brought up to prompt user to write a save file.  Canceling the requester prevents from writing the file.
.TP
\fB\-I\fR,\fB\-\-interactive\fR
Specifies that "interactive" VCD mode is to be used which allows a viewer to navigate a VCD trace while GTKWave is processing the VCD file.
When this option is used, the filename is overloaded such that it is the hexadecimal value for the shared memory ID of a writer.
Note that the shared memory ID can be passed straight from stdin by using the \fB\-\-vcd\fR option; see the manpage for
\fIshmidcat\fP(1) for more details.
.TP
\fB\-L\fR,\fB\-\-legacy\fR
Specifies that the viewer should use legacy VCD mode rather than the VCD recoder.  Note that using legacy mode will require
considerably more memory than the recoder and its use is discouraged for very large traces.
.TP
\fB\-g\fR,\fB\-\-giga\fR
Specifies that the viewer should use gigabyte mempacking when recoding (possibly slower).  This is equivalent to setting
the vlist_spill and vlist_prepack flags in the rc file.
.TP
\fB\-C\fR,\fB\-\-comphier\fR
Specifies that the viewer should use compressed hierarchy names when loading the dumpfile (available for VCD recoder, LXT, LXT2, and VZT).
This will use less memory at the expense of compression/decompression delay.
.TP
\fB\-v\fR,\fB\-\-vcd\fR
Use stdin as a VCD dumpfile.
.TP 
\fB-O,\fB\-\-output\fR <\fIfilename\fP>
Specify filename for stdout/stderr redirect.  To disable messages to the console, use /dev/null as the filename.
.TP
\fB\-z\fR,\fB\-\-slider-zoom\fR
Enable slider stretch zoom for the horizontal time slider.  Clicking then dragging the 
very left or right edge of the slider can be used to provide fine-grained 
real-time zooming.
.TP
\fB\-V\fR,\fB\-\-version\fR
Display version banner then exit.
.TP 
\fB\-h\fR,\fB\-\-help\fR
Display help then exit.
.TP 
\fB\-x\fR,\fB\-\-exit\fR
Exit after loading trace (for loader benchmarking).
.SH "FILES"
.LP 
\fI~/.gtkwaverc\fP (see manpage \fIgtkwaverc\fP(5))

.SH "EXAMPLES"
.TP 
To run this program the standard way type:
gtkwave dumpfile.vcd
.TP 
Alternatively you can run it with a save file as:
gtkwave dumpfile.vcd dumpfile.gtkw
.TP
To run interactively using shared memory handle 0x00050003:
gtkwave \-I 00050003 dumpfile.gtkw
.TP
To pick up a dumpfile automatically from a save file (e.g., when launching from an icon):
gtkwave \-\-save dumpfile.gtkw
.TP
To run from the app bundle gtkwave.app in OSX using /bin/sh:
GTKWAVE_CHDIR=\`pwd\`;export GTKWAVE_CHDIR;open \-n \-W \-a gtkwave \-\-args \-\-chdir dummy \-\-dump des.vzt \-\-save des.gtkw
.TP
Alternatively, run the following Perl script gtkwave.app/Contents/Resources/bin/gtkwave to process command line arguments from OSX shell scripts.
.TP
Note that to pass non-flag items which start with a dash, that it is required to specify \-\- in order to turn off flag parsing.  A second \-\- will disable parsing of any following arguments such that they can be passed on to Tcl scripts and retrieved via gtkwave::getArgv.
.LP 
Command line options are not necessary for representing the dumpfile, savefile, and rcfile names.  They are merely provided to allow specifying them
out of order.
.SH "BUGS"
.TP
AIX requires  \-bmaxdata:0x80000000 (\-bmaxdata:0xd0000000/dsa for AIX 5.3) to be added to your list of compiler flags for xlc if you want GTKWave to be able to access more than 256MB of virtual memory. The value shown allows the VMM to use up to 2GB (3.25GB AIX5.3). This may be necessary for very large traces.
.TP
Shift and Page operations using the wave window hscrollbar may be nonfunctional as you move away from the dump start for very large traces. A trace that goes out to 45 billion ticks has been known to exhibit this problem. This stems from using the gfloat element of the horizontal slider to encode the time value for the left margin. The result is a loss of precision for very large values. Use the hotkeys or buttons at the top of the screen if this is a problem. 
.TP
When running under Cygwin, it is required to enable Cygserver if shared memory IPC is being used.  Specifically, this occurs when \fIrtlbrowse\fP(1) is launched as a helper process.  See the Cygwin documentation for more information on how to enable Cygserver.
.SH "AUTHORS"
.LP 
Anthony Bybell <bybell@rocketmail.com>
.SH "SEE ALSO"
.LP 
\fIgtkwaverc\fP(5) \fIlxt2vcd\fP(1) \fIvcd2lxt\fP(1) \fIvcd2lxt2\fP(1) \fIvzt2vcd\fP(1) \fIvcd2vzt\fP(1) \fIxml2stems\fP(1) \fIrtlbrowse\fP(1) \fItwinwave\fP(1) \fIshmidcat\fP(1)
